package com.crcode.crm.controller.role;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.crcode.crm.bean.role.RoleBean;
import com.crcode.crm.bean.user.UserBean;
import com.crcode.crm.service.role.RoleService;
import com.crcode.crm.utils.PageVo;
import com.crcode.crm.utils.ResultPageUtil;
import com.crcode.crm.utils.ResultUtil;

/**
 * 角色管理层
 * @author lxw
 * @date 2018年8月28日 上午10:21:01
 */
@Controller
public class RoleController {
	
	@Resource(name = "roleService")
	private RoleService roleService;
	
	/**
	 * 角色新增保存
	 * 
	 * @author lxw
	 * @date 2018年4月1日 下午2:01:03
	 * @param session
	 * @param role
	 * @return
	 */
	@RequestMapping(value="/role/addSaveRole",method=RequestMethod.POST)
	@ResponseBody
	public ResultUtil addSaveRole(HttpServletRequest request,RoleBean role,HttpSession session){
		
		String json = session.getAttribute("user").toString();
		UserBean user = JSONObject.parseObject(json, UserBean.class);
		
		return roleService.addSaveRole(role,user);
	}
	
	/**
	 * 角色编辑保存
	 * @author lxw  
	 * @date 2018年8月28日 上午10:35:35
	 * @param request
	 * @param session
	 * @param role
	 * @return
	 */
	@RequestMapping(value="/role/editSaveRole",method=RequestMethod.POST)
	@ResponseBody
	public ResultUtil editSaveRole(HttpServletRequest request,RoleBean role){
		return this.roleService.editSaveRole(role);
	}
	
	/**
	 * 分页加载角色
	 * @author lxw  
	 * @date 2018年8月28日 上午10:44:53
	 * @param request
	 * @param role
	 * @param vo
	 * @return
	 */
	@RequestMapping(value="/role/loadRoleByPage",method=RequestMethod.POST)
	@ResponseBody
	public ResultPageUtil loadRoleByPage(HttpServletRequest request,RoleBean role,PageVo vo){
		return this.roleService.findAll(role, vo);
	}
	
	/**
	 * 根据主键查找
	 * @author lxw  
	 * @date 2018年8月28日 上午10:37:09
	 * @param request
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/role/findRoleByUuid",method=RequestMethod.POST)
	@ResponseBody
	public RoleBean findRoleByUuid(HttpServletRequest request,String uuid){
		return this.roleService.getEntityByUuid(uuid);
	}
	
	/**
	 * 单一批量删除角色
	 * @author lxw  
	 * @date 2018年8月28日 上午10:37:19
	 * @param request
	 * @param ids
	 * @return
	 */
	@RequestMapping(value="/role/deleteRoleByUuids",method=RequestMethod.POST)
	@ResponseBody
	public ResultUtil deleteRoleByUuids(HttpServletRequest request,String uuids){
		
		return this.roleService.deleteRoleByUuids(uuids);
	}
	/**
	 * 改变停用听启用 
	 * @author lxw
	 * @date 2018年9月18日 下午4:30:16
	 * @param request
	 * @param uuids
	 * @param isUse 0、停用；1、启用；
	 * @return
	 */
	@RequestMapping(value="/role/setIsUseByRoleUuids",method=RequestMethod.POST)
	@ResponseBody
	public ResultUtil setIsUseByRoleUuids(HttpServletRequest request,String uuids,Integer isUse){
	
		return this.roleService.changeRoleIsUse(uuids, isUse);
	} 
	/**
	 * 根据角色查找权限
	 * @author lxw  
	 * @date 2018年8月28日 上午10:37:34
	 * @param request
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/role/findRolePowerByUuid",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> findRolePowerByUuid(HttpServletRequest request,String uuid){
		
		return this.roleService.findRolePowerByUuid(uuid);
	}
	/**
	 * 分配角色业务权限
	 * @author lxw  
	 * @date 2018年8月28日 上午10:37:42
	 * @param request
	 * @param roleId
	 * @param moduleIds
	 * @param userIds
	 * @return
	 */
	@RequestMapping(value="/role/changeRolePower",method=RequestMethod.POST)
	@ResponseBody
	public ResultUtil changeRolePower(HttpServletRequest request,String roleUuid, String moduleUuids, String userUuids){
		
		return this.roleService.changePower(roleUuid, moduleUuids, userUuids);
	}
	
	/**
	 * 登陆成功 根据序号加载菜单
	 * @author lxw  
	 * @date 2018年8月28日 上午10:37:50
	 * @param request
	 * @param userId
	 * @return
	 */
	@RequestMapping(value="/role/findPowerByUserUuid",method=RequestMethod.POST)
	@ResponseBody
	public List<Map<String, Object>> findPowerByUserUuid(HttpServletRequest request,HttpSession session){
		
		String json = session.getAttribute("user").toString();
		UserBean user = JSONObject.parseObject(json, UserBean.class);
		return this.roleService.findPowerByUser(user);
				
	}
	
	/**
	 * 根据是否可用查询 1、可以；0不可以。默认1
	 * @author lxw
	 * @date 2018年9月17日 下午5:13:25
	 * @param request
	 * @param isUse
	 * @return
	 */
	@RequestMapping(value="/role/getRoleByIsUse",method=RequestMethod.POST)
	@ResponseBody
	public List<RoleBean> getRoleByIsUse(HttpServletRequest request,Integer isUse){
		
		return this.roleService.getRoleByIsUse(isUse);
	}
}
